1. Field
Embodiments of the invention relate to computer software, and more particularly, to computer software for assisting visually impaired users to access and interact with computer systems.
2. Background
Most modern operating systems provide a rich graphical user interface (GUI) as the primary means of interacting between a user and the applications and resources of the system. GUIs, while useful to most people, impose a significant challenge to those with disabilities such as blindness, visual impairment, and gross or fine motor challenges.
An individual with a physical or visual impairment or similar disability may install and utilize accessibility software on their personal computer. Accessibility software may provide a set of tools to assist a physically or visually impaired user. The set of tools includes a screen reader that reads the text being displayed on the screen using text-to-speech (TTS) technology, and a navigation tool to allow a user to navigate the operating system GUI using only the keyboard, or in some cases by adapting a pointing device (e.g., mouse) input. In addition to these capabilities, accessibility software for impaired users works with external hardware devices to allow output to be streamed to a refreshable Braille output device which acts like a display.
Existing accessibility software may conflict with other applications or be unable to properly describe these applications unless the applications are specifically designed to be used with a particular accessibility application. As a result, accessibility applications may become non-functional and unable to recover due to programming and run time conflicts with other applications. The non-functional state of the accessibility application hinders the ability of the impaired user to continue to operate an application or navigate the operating system. The impaired user may not have any means of determining the state of the computer system when the accessibility application becomes non-functional. Also, the accessibility application does not run during system start up and a user attempting to utilize the system during start up is not able to access the utilities of the accessibility application.
Spreadsheet, word processing, and text editor applications provide GUI's which are easily navigable due to their structured format for element placement. For instance, in spreadsheet applications, elements (e.g., characters) are placed in a fixed group of cells, which provide for easy and predictable navigation from cell to cell. Likewise, in word processing applications, elements are places within specific and fixed columns and rows, whose widths are dependent upon a selected line spacing and font size. However, web pages are not fixed within any set structure. Elements are not bound to cells or fixed row and column sizes. Further, elements may vary based on size, shape, format (e.g., image, video, characters). Elements on a web page may also serve various purposes—e.g., hyperlink, advertisement, images to be used as dividers, or even an image used for aesthetic design of the web page template.
Existing accessibility applications attempt to provide full keyboard navigation (FKN). This means that while an operating system GUI might be designed primarily for mouse manipulation, it can also be driven from the keyboard by using keyboard commands to move around a screen or to select functions of applications that are currently in the focus or displayed by the operating system. However, existing accessibility applications are not able to allow a user to access all options or features of a GUI. Also, the navigation systems on accessibility applications for impaired individuals may have key mappings that conflict with the key mappings of other applications. This causes either a loss of functionality in the accessibility application stranding the user relying on the navigation system and utilities provided by the accessibility application.
Navigation systems that build maps of web pages are also limited in their effectiveness. Building a map of the web page may, for instance, entail obtaining the coordinates of every element to be mapped and creating a list of those elements in order to utilize their spatial orientations. While this may be effective for very simple web pages with a small number of elements, it is not effective for web pages that contain a large number of elements, which are very common. Building a map of these more complicated web pages—for example, Google News which may contain hundreds of elements—takes a very long time and becomes impractical in its use.
Currently, the known ways to navigate a web page using accessibility tools provide their own set of navigational problems. One such problem is that a very limited geographical orientation of the web page is provided for the user. For instance, “tag-based navigation” allows a user to type a keyword and locate the keyword on the web page, but does not provide the user with any geographical sense of how the web page is structured. It also presents problems when dealing with non-textual elements.
Another known way to navigate a web page uses a coordinate system, where a user may determine what element is located at a specific coordinate on the web page. This proves to be very cumbersome and non-user friendly because an impaired user will have a difficult time guessing which element he is trying to navigate to. If, for instance, the user wishes to move to the right of a web page, not only will the user have to identify that coordinate, which may pose its own problems, but he may also be identifying a trivial or needless element on the webpage, which may end up confusing the user as to what is located to the right on the web page.
“Group navigation” is another way of navigating which provides its own set of problems. Group navigation uses parent/child relationships to group elements together on a web page. Child elements are grouped around a parent element in an intuitive manner. For example, the home page for Google News may have groups for each of the following parent elements: US News, World News, Business News, Science/Technology News, Health News, etc. For each of these parent elements, a list of child elements may exist—e.g., the list of corresponding news article hyperlinks. Furthermore, each of those child elements may have their own group of child elements (i.e., grandchildren to the original parent). The child/parent relationship could continue to further degrees of children.
Group navigation allows a user to move an accessibility tool, e.g. accessibility cursor, from a parent element through its corresponding child elements, and if desiring so, continuing on to a next parent element and then through its corresponding child elements. This too, however, has its limitations. For example, if US News (parent element) and its 5 article hyperlinks (child elements) are located directly to the left of World News (parent element) and its 5 article hyperlinks (child elements), then in order to go from article 3 of the US News to article 3 of the World News, a user would have to cycle through the remaining articles of the US News (i.e., article 4 and 5) and then through the parent element (World News) and its first two articles (article 1 and 2) before arriving at article 3 of World News. Furthermore, groups may not be oriented in even rows or columns and may be further unaligned with images, borders, etc., in between groups, thus making geographical orientation even less intuitive. Furthermore, additional confusion is presented when layers of groups are present (e.g., grandchildren, great-grandchildren, etc.) or when certain formatting structures are present (e.g., bulletpoints).
The Document Object Model (DOM) is another way to navigate through a web page. Web browsers read HTML, XML, and related formats and produce a DOM based on the information sent from the web page. The visual grid layout of the web page is thus turned into a long sequence of elements for the DOM. Thus, when a user navigates from one element to another, he must navigate through the sequence of elements of the DOM. While, the sequence may follow a primitive pattern through the web page, the elements within the sequence may randomly jump around the page. These characteristics make it inconvenient to navigate from one element to another and also take away from the intuitiveness of the geographical orientation of the web page.
Another navigational method uses the design layout of the web page. This depends on the way the web designer layed out the web page. For instance, if a web page was highlighted using a mouse cursor from the top-left corner to the bottom-right corner, each element on the web page would be highlighted in a specific order depending on how the web designer layed out the web page (i.e., how elements were grouped and structured). Thus, a user could navigate through elements in the described order and work his way through the elements in the web page to get to a desired element. However, moving from one element to another adjacent element may not be possible without the user being taken to another undesired group of elements or to an undesired element in another direction (depending on how the web designer layed out the web page). Therefore, navigation of the web page using this technique poses similar problems in navigating among adjacent elements, as well as problems in providing the user with an idea of the geographical orientation of the webpage (since different web pages will be layed out inconsistently and in different ways).
What is needed is a method of presenting a webpage which incorporates navigation techniques and tools to allow impaired users to navigate throughout a web page in a convenient and geographically intuitive manner.
Also, what is needed is a method of presenting a webpage which incorporates the easy navigation used with text editors to navigation used with HTML.